// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/bind.h"
#include "base/debug/task_annotator.h"
#include "base/pending_task.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace base {
namespace debug {
    namespace {

        void TestTask(int* result)
        {
            *result = 123;
        }

    } // namespace

    TEST(TaskAnnotatorTest, QueueAndRunTask)
    {
        int result = 0;
        PendingTask pending_task(FROM_HERE, Bind(&TestTask, &result));

        TaskAnnotator annotator;
        annotator.DidQueueTask("TaskAnnotatorTest::Queue", pending_task);
        EXPECT_EQ(0, result);
        annotator.RunTask("TaskAnnotatorTest::Queue", pending_task);
        EXPECT_EQ(123, result);
    }

} // namespace debug
} // namespace base
